package jfuzzyprincepless.algorithm.structure;

/**
 * {@link jfuzzyprincepless.algorithm.structure.IConstruction}
 * is label interface - base for all algorithm constructions
 *
 * NAME RULES:
 * [how to name interfaces, extensions, implementations,
 * executors and execution protocols of algorithm structure elements]
 *
 * 1 	general interfaces:
 * 		public interface I[construction-name]Construction { ... }
 *
 * 2	negotiation extensions of construction interface:
 * 		I[]Construction -> INegotiation[] or INegotiation[]Construction or INeg[]Construction
 * 		@see jfuzzyprincepless.zarchive.algorithm.structure.ifcnstr.INegotiationCondition
 * 		extends
 * 		{@link jfuzzyprincepless.zarchive.algorithm.structure.IConditionConstruction}
 *
 * 3	base implementations - it is abstract classes, default
 * 		implementation of base methods declared in interface
 * 		(possible not all methods)
 * 		@see jfuzzyprincepless.agents.BaseNegotiationAgent
 * 		@see BaseNegotiationFor
 *
 * 4	negotiation extensions should be placed in
 * 		package named: [package of construction].negotiation
 *
 * 5	I[]Construction -> INegotiation[]Construction -> IExecute[]Negotiation
 * 		or IExec[]Negotiation
 * 		name must not be too long
 * 		@see jfuzzyprincepless.zarchive.algorithm.structure.ifcnstr.IExecuteIfNegotiation
 *
 * 6	implementations of negotiation executors and negotiation protocols
 * 		must be placed in package named:
 * 		[package of construction].negotiation.[name of protocol]
 *
 * 7 	implementation of executor:
 * 		I[]Construction -> INegotiation[] -> IExec[]Negotiation ->
 * 		-> [negotiation-protocol-name]Exec[]Negotiation
 * 		[negotiation-protocol-name] is empty for default or base implementations
 * 		@see jfuzzyprincepless.negotiation.protocols.propositionnetwork.ExecuteIfNegotiation
 *
 * 8 	execution protocols:
 * 		I[]Construction -> INegotiation[] -> IExec[]Negotiation ->
 * 		-> IExec[]NegotiationProtocol
 * 		and its' implementation:
 * 		-> [negotiation-protocol-name]Exec[]NegotiationProtocol
 * 		@see jfuzzyprincepless.negotiation.protocols.propositionnetwork.ExecuteIfNegotProtocol
 *
 */
public interface IConstruction {
}
